/**
 * Tabbar状态管理工具
 */

// 更新小程序原生tabbar状态
export function updateMPTabBar(selectedIndex) {
  // #ifdef MP-WEIXIN
  try {
    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1];
    if (currentPage && typeof currentPage.getTabBar === 'function') {
      const tabbar = currentPage.getTabBar();
      if (tabbar) {
        tabbar.setData({
          selected: selectedIndex
        });
      }
    }
  } catch (e) {
    console.error('更新小程序tabbar状态失败', e);
  }
  // #endif
}

// 获取当前页面在tabbar中的索引
export function getCurrentTabIndex() {
  try {
    const pages = getCurrentPages();
    if (!pages || pages.length === 0) return -1;
    
    const currentPage = pages[pages.length - 1];
    if (!currentPage || !currentPage.route) return -1;
    
    const route = currentPage.route;
    const tabList = [
      'pages/index/index',
      'pages/category/category',
      'pages/cart/cart',
      'pages/user/user'
    ];
    
    return tabList.findIndex(item => item === route);
  } catch(e) {
    console.error('获取当前tab索引失败', e);
    return -1;
  }
}

// 页面切换时更新tabbar状态
export function onTabPageShow() {
  // #ifndef MP-WEIXIN
  // H5和APP中通过事件通知更新
  uni.$emit('onPageShow');
  // #endif
  
  // 小程序中直接更新
  // #ifdef MP-WEIXIN
  const currentIndex = getCurrentTabIndex();
  if (currentIndex >= 0) {
    updateMPTabBar(currentIndex);
  }
  // #endif
}

export default {
  updateMPTabBar,
  getCurrentTabIndex,
  onTabPageShow
};